package com.imut.lagain.entity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 关怀任务实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("care_task")
public class CareTask implements Serializable {
    private static final Logger log = LoggerFactory.getLogger(CareTask.class);


    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 任务唯一标识
     */
    @TableField("task_id")
    private String taskId;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 关怀类型（comfort-舒适关怀，nutrition-营养关怀，exercise-运动关怀，emotional-情感关怀，practical-实用关怀）
     */
    @TableField("care_type")
    private String careType;

    /**
     * 任务标题
     */
    @TableField("title")
    private String title;

    /**
     * 任务描述
     */
    @TableField("description")
    private String description;

    /**
     * 生理期阶段（menstrual-月经期，follicular-卵泡期，ovulation-排卵期，luteal-黄体期）
     */
    @TableField("cycle_phase")
    private String cyclePhase;

    /**
     * 任务状态（pending-待完成，completed-已完成，skipped-已跳过）
     */
    @TableField("status")
    private String status;

    /**
     * 优先级（low-低，medium-中，high-高）
     */
    @TableField("priority")
    private String priority;

    /**
     * 预计完成时间（分钟）
     */
    @TableField("estimated_duration")
    private Integer estimatedDuration;

    /**
     * 任务标签（JSON数组格式）
     */
    @TableField("tags")
    private String tags;

    /**
     * 完成者用户ID
     */
    @TableField("completed_by")
    private Long completedBy;

    /**
     * 完成时间
     */
    @TableField("completed_at")
    private LocalDateTime completedAt;

    /**
     * 任务到期时间
     */
    @TableField("due_date")
    private LocalDateTime dueDate;

    /**
     * 创建时间
     */
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;

    /**
     * 是否删除（0-未删除，1-已删除）
     */
    @TableLogic
    @TableField("is_deleted")
    private Integer isDeleted;
}
